var config = require('config.js');
var common = require('common.js');
 
var methodToken = []
//接口统一封装
function api(method, data, callback, show = true) {
  //如果是需要登陆的，增加token
  if (methodToken.indexOf(method) >= 0) {
    var userToken = wx.getStorageSync('userToken');
    if (!userToken) {
      common.jumpToLogin();
    } else {
      data.token = userToken;
      data.method = method;
      post(data, callback, show);
    }
  } else {
    data.method = method;
    post(data, callback, show);
  }

};

function request(url, params, method = "GET", type = "json") {
  console.log("向后端传递的参数", params);
  return new Promise((resolve, reject) => {
    let opts = {
      url: url,
      data: Object.assign({}, params),
      method: method,
      header: { 'Content-Type': type },
      success: resolve,
      fail: reject
    }
    // console.log("请求的URL", opts.url);
    wx.request(opts);
  });
}; 
/**
   * 获取用户中心位置经纬度
   * @param {ctx} name 
   */
  function getCenterLocation(name) {
  return new Promise((resolve, reject) => name.getCenterLocation({ success: resolve, fail: reject }));
} 

//post请求
function post(data, callback, show) {
  if (show) {
    wx.showLoading({
      title: '载入中...'
    });
  }
  var url = data.method;
  console.log(data)

  wx.request({
    url: config.api_url + 'law.html',
    data: data,
    method: 'POST',
    success: function (res) {
      if (show) {
        wx.hideLoading();
      }
      //这里做判断，如果不报错就返回，如果报错，就做错误处理
      if (res.data.status) {
        callback(res.data);
      } else {
        error(res.data, callback, data);
      }
    },
    fail: function (res) {
      if (show) {
        wx.hideLoading();
      }
      return {
        status: false,
        data: res.data,
        msg: '接口调用失败',
      };
    },
    complete: function (res) {

    }
  });
}

//post直接请求
function post2(path, data, callback, show = true) {
  if (show) {
    wx.showLoading({
      title: '载入中...'
    });
  }
  wx.request({
    url: config.api_url + 'api/' + path,
    data: data,
    method: 'POST',
    success: function (res) {
      if (show) {
        wx.hideLoading();
      }
      //这里做判断，如果不报错就返回，如果报错，就做错误处理
      if (res.data.status) {
        callback(res.data);
      } else {
        error(res.data, callback);
      }
    },
    fail: function (res) {
      if (show) {
        wx.hideLoading();
      }
      return {
        status: false,
        data: res.data,
        msg: '接口调用失败',
      };
    },
    complete: function (res) {

    }
  });
}

//接口错误信息处理
function error(res, callback, postData) {
  switch (res.data) {
    case 14007:   //token验证失败，需要从新登录
      //判断是否是需要登陆的接口
      if (methodToken.indexOf(postData.method) >= 0) {
        common.jumpToLogin();
      }
      break;
    case 2:
      ;
      break;
    default:
      callback(res);
  }
}
// function jumpToLogin(){
//   var value = wx.getStorageSync('jump_to_login');
//   if (!value) {
//     wx.setStorageSync('jump_to_login', true);   //因为可能多个接口同时调用，所以这里要设置个状态位，保证登陆页面只显示一次，此值在登陆页面出去的时候，必须清空
//     wx.showToast({
//       title: '请登录...',
//       icon: 'success',
//       duration: 2000,
//       success: function (res) {
//         wx.navigateTo({
//           url: '/pages/member/login/login'
//         });
//       }
//     })
//   } 
// }



/***
 * 
 */

//上传图片
function uploadImage(num, callback) {
  wx.chooseImage({
    count: num,
    success: function (res) {

      console.log(res.tempFilePaths)

      var tempFilePaths = res.tempFilePaths
      for (var i = 0; i < tempFilePaths.length; i++) {

        console.log(res.tempFilePaths[i])
        wx.uploadFile({
          url: config.api_url + 'centenzilu/Plugin/uploadImage',
          filePath: tempFilePaths[i],
          name: 'upfile',
          success: function (res) {
            var obj = JSON.parse(res.data);
            callback(obj);
          }
        });
      }
    }
  });
}













/**
 * 新的微信登陆方法
 * data的值报错
 *   mobile:手机号码
 *   code:手机短信验证码，可为空
 *  wx_code: 
 *   wx_iv: 
 *   wx_edata: 
 * 
 */
function login1(data, callback) {
  api('user.wxapplogin1', data, function (res2) {
    //res2.wxUserInfo = res1.userInfo;    //微信的用户信息保存起来
    callback(res2);
  });
}
function login2(data, callback) {
  //加入邀请码
  let pid = wx.getStorageSync('invitecode');
  if (pid) {
    data['pid'] = pid;
  }
  api('user.wxapplogin2', data, function (res2) {
    //res2.wxUserInfo = res1.userInfo;    //微信的用户信息保存起来
    callback(res2);
  });
}



//手机号码短信登陆
function smsLogin(data, callback) {
  data.platform = 2;        //手机号码必须制定登陆平台，否则，取到的token可能不是微信小程序平台的
  api('user.smslogin', data, function (res2) {
    callback(res2);
  });
}

//发送手机短信验证码
function sms(mobile, code, callback) {
  //code = 2是登陆，等1是注册,默认等于2
  var data = {
    mobile: mobile,
    code: code
  };
  api('user.sms', data, function (res2) {
    callback(res2);
  });
}


//登陆
//function login(callback){
// wx.login({
//   success: function (res) {
//     if (res.code) {
//       //这里取到了code，那么就调用wx.getUserInfo取用户数据
//       wx.getUserInfo({
//         withCredentials: true,
//         success: function (res1) {
//           //到这一步了，所有数据都取到了，去服务器端取token
//           var data = {
//             code: res.code,
//             iv: res1.iv,
//             edata: res1.encryptedData
//           };
//           api('user.wxapplogin', data, function(res2){
//             res2.wxUserInfo = res1.userInfo;    //微信的用户信息保存起来
//             callback(res2);
//           });
//         },
//         fail: function (res) {
//           //如果没有获取到用户信息，打开设置页面
//           wx.openSetting({
//             success: function(res) {
//             }
//           })
//         }
//       })
//     } else {
//       //wx.login成功，但是没有取到code
//       wx.showToast({
//         title: '用户授权失败wx.login',
//         icon: 'warn',
//         duration: 2000
//       })
//     }
//   },
//   fail: function (res) {
//     //wx.login的fail
//     wx.showToast({
//       title: '用户授权失败wx.login',
//       icon: 'warn',
//       duration: 2000
//     })
//   }
// });
//}
//用户信息接口
function userInfo(callback) {
  api('user.info', {}, function (res) {
    callback(res);
  });
}
//用户信息修改接口,nickname,sex,birthday
function userEditInfo(data, callback) {
  api('user.editinfo', data, function (res) {
    callback(res);
  });
}
 
//获取签到信息
function getSignInfo(callback) {
  api('user.getsigninfo', {}, function (res) {
    callback(res);
  });
}
//上传图片
function uploadImage(num, callback) {
  wx.chooseImage({
    count: num,
    success: function (res) {
      var tempFilePaths = res.tempFilePaths
      for (var i = 0; i < tempFilePaths.length; i++) {
        wx.uploadFile({
          url: config.api_url + 'api.html',
          filePath: tempFilePaths[i],
          name: 'upfile',
          formData: {
            method: 'images.upload'
          },
          success: function (res) {
            var obj = JSON.parse(res.data);
            callback(obj);
          }
        });
      }
    }
  });
}

module.exports = {
  login1: login1,
  login2: login2,
  smsLogin: smsLogin,
  sms: sms,
  userInfo: userInfo,
  userEditInfo: userEditInfo,
  uploadImage: uploadImage, 
  getSignInfo: getSignInfo
}